As more and more services become available over the Internet, service providers are finding it increasingly difficult to provide uninterrupted and high-availability (HA) service. Often service providers will deploy multiple servers that are each capable of providing a same service to a client and that each use proxy server architectures to load balance processing and accelerate processing.
An architecture that may be deployed by a service provider is a reverse proxy. With a reverse proxy requests made from a client over the Internet are intercepted by the reverse proxy before being routed to a target service for processing. This front-end processing permits the reverse proxy to accelerate client requests if content that can satisfy a client's request resides in cache. The reverse proxy can also load balance and in some cases perform authentication services on behalf of the target service. Other proxy arrangements may be used as well, such as forward proxies and transparent proxies.
When a client is engaged in transactions with a target service, a variety of situations may occur that can cause the connection between the client and the server associated with the service to fail or become unresponsive. If the problem is within an environment of the service provider, then the service provider can attempt to dynamically remedy the situation in an effort to enhance the client's experience with the service provider. The ability to seamlessly transition the client's session with the target service to a failover over server that also has another executing version of the target service is referred to HA. To do this transition, service providers may deploy a variety of architectures and/or techniques.
One technique is to have a mirrored server process in parallel everything the target service processes, such that when the server associated with the target service fails the mirrored service and target service can pick up uninterrupted processing. However, in many cases this may be a waste of resources and can quickly become unmanageable and expensive when multiple servers are processing client requests because each server may need to be mirrored.
Another technique and more efficient technique is to have a processing server record its transactions with a separate store, such that if the processing server fails a failover server can inspect the separate store and engage the client where processing left off before the failure occurred. Yet, this assumes that the processing server properly synchronized in a concurrent fashion with the separate store because any gap in synchronization can make failover difficult or in some cases impractical.
Thus, it is advantageous to provide improved techniques for transparent network connection takeovers in the event of communication failures.